package cn.iocoder.yudao.module.crossborder.order.controller.admin.ordercustomeraddress.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;

@Schema(description = "管理后台 - 跨境电商客户地址新增/修改 Request VO")
@Data
public class OrderCustomerAddressSaveReqVO {

    @Schema(description = "地址编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2866")
    private Long id;

    @Schema(description = "客户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11094")
    @NotNull(message = "客户编号不能为空")
    private Long customerId;

    @Schema(description = "地址类型（1收货地址 2账单地址 3退货地址）", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @NotNull(message = "地址类型（1收货地址 2账单地址 3退货地址）不能为空")
    private Integer addressType;

    @Schema(description = "地址名称", example = "芋艿")
    private String addressName;

    @Schema(description = "名", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
    @NotEmpty(message = "名不能为空")
    private String firstName;

    @Schema(description = "姓", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
    @NotEmpty(message = "姓不能为空")
    private String lastName;

    @Schema(description = "全名", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
    @NotEmpty(message = "全名不能为空")
    private String fullName;

    @Schema(description = "公司")
    private String company;

    @Schema(description = "电话")
    private String phone;

    @Schema(description = "邮箱")
    private String email;

    @Schema(description = "国家代码", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "国家代码不能为空")
    private String countryCode;

    @Schema(description = "国家名称", example = "芋艿")
    private String countryName;

    @Schema(description = "省份")
    private String province;

    @Schema(description = "城市", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "城市不能为空")
    private String city;

    @Schema(description = "区县")
    private String district;

    @Schema(description = "地址行1", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "地址行1不能为空")
    private String addressLine1;

    @Schema(description = "地址行2")
    private String addressLine2;

    @Schema(description = "邮政编码", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "邮政编码不能为空")
    private String postalCode;

    @Schema(description = "纬度")
    private BigDecimal latitude;

    @Schema(description = "经度")
    private BigDecimal longitude;

    @Schema(description = "是否默认地址", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "是否默认地址不能为空")
    private Boolean isDefault;

    @Schema(description = "是否已验证", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "是否已验证不能为空")
    private Boolean isValidated;

    @Schema(description = "验证来源")
    private String validationSource;

    @Schema(description = "验证时间")
    private LocalDateTime validationTime;

    @Schema(description = "使用次数", requiredMode = Schema.RequiredMode.REQUIRED, example = "25860")
    @NotNull(message = "使用次数不能为空")
    private Integer useCount;

    @Schema(description = "最后使用时间")
    private LocalDateTime lastUseTime;

}